package com.gofun.framework.core.utils;

import java.util.List;
import java.util.Map;

import org.springframework.util.CollectionUtils;


public abstract class StringUtils extends org.springframework.util.StringUtils {

  /**
   * @Description : 去除首字符串
   * @return : String
   * @Creation Date : 2015-4-23 上午11:36:48
   * @Author : wangchao
   */
  public static String removeFristStr(String str, String substr) {
    if (!hasText(str))
      return "";
    return str.substring(substr.length());
  }

  /**
   * @Description : 去除末字符串
   * @return : String
   * @Creation Date : 2016年5月21日 下午10:29:16
   * @Author : chichangchao
   */
  public static String removeEndStr(final String str, final String remove) {
    if (!hasText(str) || !hasText(remove)) {
      return "";
    }
    if (str.endsWith(remove)) {
      return str.substring(0, str.length() - remove.length());
    }
    return str;
  }

  /**
   * @Description : 去除上级元素
   * @return : String
   * @Creation Date : 2015-5-5 下午2:29:37
   * @Author : wangchao
   */
  public static String trimParent(String generateJson, String parent) {
    if (!hasText(generateJson))
      return "";
    StringBuilder resutl = new StringBuilder(generateJson.trim());
    resutl = resutl.deleteCharAt(0);
    resutl = resutl.deleteCharAt(resutl.length() - 1);
    return delete(resutl.toString(), "\"" + parent + "\":");
  }

  public static String generteBatchNum(String source, int length) {
    String value = String.valueOf(source);
    while (value.length() < length) {
      value = "0" + value;
    }
    return value;
  }

  /**
   * @Description : 根据参数cd、参数类型获取参数描述
   * @return : String
   * @Creation Date : 2016年3月18日 下午12:13:33
   * @Author : liuxiaobo
   */
  public static <T extends DictBase> String getDictText(Map<String, List<T>> map, String type,
      String cd) {
    if (!StringUtils.hasText(cd))
      return "";
    List<T> list = getDictByType(map, type);
    if (CollectionUtils.isEmpty(list))
      return "";

    for (T dict : list)
      if (cd.equals(dict.getCd()))
        return dict.getDscp();

    return "";
  }

  /**
   * @Description : 根据参数类型返回参数集合
   * @return : List<T>
   * @Creation Date : 2016年3月18日 下午12:15:07
   * @Author : liuxiaobo
   */
  public static <T extends DictBase> List<T> getDictByType(Map<String, List<T>> map, String type) {
    if (CollectionUtils.isEmpty(map) || !StringUtils.hasText(type))
      return null;
    return map.get(type);
  }

  /**
   * @Description : 字符串快速连接方法
   * @return : String
   * @Creation Date : 2016年5月6日 上午11:30:04
   * @Author : wangchao
   */
  public static String append(String... values) {
    if (values == null || values.length == 0)
      return "";
    StringBuilder builder = new StringBuilder();
    for (String val : values) {
      builder.append(val);
    }
    return builder.toString();
  }

  /**
   * @Description : 返回目标对象的字符值
   * @return : String
   * @Creation Date : 2016年7月7日 下午6:05:12
   * @Author : wangchao
   */
  public static String toString(Object target) {
    if (target == null)
      return "";
    return BeanUtils.toString(target);
  }

}
